package client.entidades;

import comum.Message;
import proxy.*;
import java.util.Observable;
import java.util.Observer;

/**
 *
 * @author Roberto Leal
 */
public class Proxy_IRC_SaidaGrafica extends Observable implements Observer, Runnable {

    //objeto que conecta ao servidor irc remoto
    public Cliente_IRC cliente;
    //host do servidor remoto onde se quer conectar
    public String hostServidorRemoto;
    //porta do servidor remoto
    public int portaServidorRemoto = 6667;
    //porta onde o Proxy vai escutar localmente (localhost:portaEscutaLocal)
    public int portaEscutaLocal = 6667;

    public Proxy_IRC_SaidaGrafica(String hostRemoto, int portaRemota) {
        this.portaServidorRemoto = portaRemota;
        this.hostServidorRemoto = hostRemoto;
    }

    public Proxy_IRC_SaidaGrafica(String hostRemoto) {
        this.hostServidorRemoto = hostRemoto;
    }

    public void run() {
        cliente = new Cliente_IRC(this.hostServidorRemoto, this.portaServidorRemoto);
        cliente.addObserver(this);
        Thread thread = new Thread(cliente);
        thread.start();

        cliente.escreverLinha("NICK " + ConfigUsuario.getInstance().getNickName());
        cliente.escreverLinha("USER " + ConfigUsuario.getInstance().getUserId() + " 0 * :" + ConfigUsuario.getInstance().getNome());
    }

    public void update(Observable o, Object arg) {
        if (arg instanceof String) {
            String leitura = (String) arg;

            if (o instanceof Cliente_IRC) {
                Message m = new Message(leitura);
                setChanged();
                notifyObservers(m.toString());

                //ou usar este outro debug que imprime um objeto ServerMessage, que organiza a mensagem
//               System.out.println("                                                                " + new ServerMessage(leitura));

            }

        } else if (arg instanceof Boolean) {
            Boolean conectou = (Boolean) arg;
            if (o instanceof Cliente_IRC) {
                if (conectou) {
//                    System.out.println("Conectado ao servidor irc");
                } else {

                }
            } 

        }
    }

    public void disconnect() {
        System.out.println("desconectado");
    }

}
